package com.authine.cloudpivot.web.Utils;


import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Value;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @Description : 对接第三方接口工具
 * @param ： null
 * @author : Liun
 * @date : 2020/5/8
 */
@Slf4j
public class InterfaceDockingUtil {

    /**
     * @Description : 外企德科加密解密，生成sig
     * @param ： user_key
     * @param ： call_time
     * @param ： data
     * @author : Liun
     * @date : 2020/5/8
     */
    public static HashMap<String, String> getSecretParams(int pageNo,String secretKey) throws Exception {

        //String userKey="QqghwxR213sdf";
        //String secretKey="df7632kjdf";

        String userKey="AS5G43DKJ879Y";

        if(!ObjectUtils.allNotNull(pageNo)){
            pageNo=1;
        }
        JSONArray arrayParam = new JSONArray();
        Map<String, Object> param = new HashMap<String, Object>();
        param.put("pageNo", pageNo);
        param.put("updateTimestamp", "946659661001");
        arrayParam.add(param);

        JSONObject jsons = new JSONObject();
        jsons.put("params", JSONArray.fromObject(arrayParam));
        jsons.put("queue", "CUSTOMER-MANAGEMENT-SERVICE");
        jsons.put("service", "queryRcsCustomerEntryService");
        jsons.put("method", "getCustomer");

        SimpleDateFormat sf =new SimpleDateFormat("yyyyMMddhhmmssSSS");
        Date date=new Date();
        String callTime=sf.format(date);
        String sig=createSig(userKey,jsons.toString(),callTime,secretKey);

        //返回已加密的参数
        HashMap<String, String> rm = new HashMap<>();
        rm.put("user_key", userKey);
        rm.put("data", jsons.toString());
        rm.put("call_time", callTime);
        rm.put("sig", sig);
        return rm;
    }



    /**
     * @Description : 根据参数生成sig
     * @param ： userKey
     * @param ： data
     * @param ： callTime
     * @param ： secretKey
     * @author : Liun
     * @date : 2020/5/13
     */
    public static String createSig(String userKey,String data,String callTime,String secretKey) throws Exception {
        String keyStr = "user_key="+userKey + "data="+ data +"call_time="+callTime;
        keyStr = keyStr.replaceAll("[^a-zA-Z0-9]\\s*","").replaceAll(" ", "");
        String sig = DigestUtils.md5Hex(keyStr + secretKey);
        return sig;
    }



}
